﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Rarous.TexyNet.Modules
{
    /// <summary>
    /// Modul emotikonů.
    /// </summary>
    /// <remarks>
    /// Modul emotikonů má na starosti náhradu textových emotikonů jejich grafickou interpretací.
    /// Názvy souborů jsou následující:
    /// <table>
    /// <tr><th>:-)</th><td>smile.gif</td></tr>
    /// <tr><th>:-(</th><td>sad.gif</td></tr>
    /// <tr><th>;-)</th><td>wink.gif</td></tr>
    /// <tr><th>:-D</th><td>biggrin.gif</td></tr>
    /// <tr><th>8-O</th><td>eek.gif</td></tr>
    /// <tr><th>8-)</th><td>cool.gif</td></tr>
    /// <tr><th>:-?</th><td>confused.gif</td></tr>
    /// <tr><th>:-x</th><td>mad.gif</td></tr>
    /// <tr><th>:-P</th><td>razz.gif</td></tr>
    /// <tr><th>:-|</th><td>neutral.gif</td></tr>
    /// </table>
    /// </remarks>
    /// <example>
    /// Následující kód ukazuje použití
    /// <code>
    /// Texy texy = new Texy("Hello world! :-)");
    /// texy.SmiliesModule.Allowed = true;
    /// texy.SmiliesModule.Root = "/img/smilies/";
    /// string output = texy.ToXhtml();
    /// </code>
    /// </example>
    public class SmiliesModule
    {
        #region Fields
        private bool allowed;
        private string root;
        private string cssClass;
        #endregion

        #region Constructors
        /// <summary>
        /// Konstruktor.
        /// </summary>
        public SmiliesModule()
        {
            root = String.Empty;
            cssClass = String.Empty;
        }
        
        /// <summary>
        /// Konstruktor. Inicializuje modul z konfigurace.
        /// </summary>
        /// <param name="element">Element</param>
        public SmiliesModule(Configuration.SmilesModuleElement element)
            : this()
        {
            ReadConfiguration(element);
        }
        #endregion

        #region Private Methods
        private void ReadConfiguration(Configuration.SmilesModuleElement element)
        {
            if (element == null)
            {
                return;
            }

            allowed = element.Allowed;
            root = element.Root;
            cssClass = element.CssClass;
        } 
        #endregion

        #region Properties
        /// <summary>
        /// Příznak, zda-li je povoleno zpracovávat emotikony.
        /// </summary>
        public bool Allowed
        {
            get { return allowed; }
            set { allowed = value; }
        }

        /// <summary>
        /// Vrací nebo nastavuje cestu k adresáři s emotikony.
        /// </summary>
        public string Root
        {
            get { return root; }
            set { root = value; }
        }

        /// <summary>
        /// Vrací nebo nastavuje CSS třídu emotikonů.
        /// </summary>
        public string CssClass
        {
            get { return cssClass; }
            set { cssClass = value; }
        }
        #endregion
    }
}
